JWT (JSON Web Token) এবং JSON (JavaScript Object Notation) দুটি আলাদা প্রযুক্তি, তবে তাদের মধ্যে একটি গভীর সম্পর্ক রয়েছে। JSON হল একটি ডেটা ফরম্যাট যা ডেটা স্টোর বা এক্সচেঞ্জ করতে ব্যবহৃত হয়, যেখানে JWT হল একটি স্ট্যান্ডার্ড যা নিরাপদভাবে JSON অবজেক্ট পাঠানোর জন্য ডিজাইন করা হয়েছে। JWT মূলত একটি ক্রিপ্টোগ্রাফিক সিগনেচার দ্বারা সুরক্ষিত JSON ডেটা, যা সাধারণত অথেনটিকেশন এবং অথোরাইজেশনের ক্ষেত্রে ব্যবহৃত হয়।
JSON (JavaScript Object Notation)
JSON একটি লাইটওয়েট, মানব-পাঠযোগ্য এবং মেশিন-পার্সযোগ্য ডেটা ফরম্যাট। এটি ওয়েব সার্ভিস এবং অ্যাপ্লিকেশনগুলির মধ্যে ডেটা এক্সচেঞ্জ করার জন্য ব্যাপকভাবে ব্যবহৃত হয়। JSON সাধারণত কীগুলি এবং মানের (key-value pairs) মাধ্যমে ডেটা ধারণ করে, যেমন:
{
"name": "John Doe",
"age": 30,
"email": "john.doe@example.com"
}
এখানে name, age, এবং email কীগুলি এবং তাদের মানগুলো JSON ডেটার অংশ।
JWT (JSON Web Token)
JWT (JSON Web Token) একটি স্ট্যান্ডার্ড যা সুরক্ষিতভাবে JSON অবজেক্ট ধারণ করে এবং এটি মূলত Authentication (অথেনটিকেশন) এবং Authorization (অথোরাইজেশন) এর জন্য ব্যবহৃত হয়। JWT একটি Token যা ৩টি অংশে বিভক্ত:
- Header: এটি JSON অবজেক্ট, যা টোকেনের টাইপ (যেমন JWT) এবং সিগনেচার এলগোরিদম (যেমন HMAC SHA256) নির্দেশ করে।
- Payload: এটি মূলত "claims" ধারণ করে। Claims হলো তথ্য যা একটি টোকেনের মধ্যে স্টোর করা থাকে, যেমন ব্যবহারকারীর পরিচয়, অনুমতি (permissions), বা অভ্যন্তরীণ ডেটা।
- Signature: এটি একটি নিরাপত্তা অংশ যা টোকেনের সত্যতা নিশ্চিত করতে ব্যবহৃত হয়। এটি Header এবং Payload এর উপর ভিত্তি করে তৈরি হয় এবং একটি সিক্রেট কি দিয়ে সাইন করা হয়।
JWT Structure:
header.payload.signature
Example of a JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
এখানে:
- Header:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9(Base64-encoded) - Payload:
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ(Base64-encoded) - Signature:
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT এবং JSON এর মধ্যে সম্পর্ক
- JSON ফরম্যাটে তথ্য ধারণ: JWT একটি JSON অবজেক্ট যা সুরক্ষিত তথ্য ধারণ করে। JWT এর Payload অংশে JSON ফরম্যাটে বিভিন্ন ক্লেইমস (claims) রাখা হয়, যেমন ব্যবহারকারীর নাম, ইমেইল, ভূমিকা (role), অথবা অন্য কোনো ডেটা।
JWT Header JSON: JWT এর Header অংশটি একটি JSON অবজেক্ট থাকে, যেখানে টোকেনের প্রকার (JWT) এবং সিগনেচার এলগোরিদমের তথ্য থাকে। যেমন:
{ "alg": "HS256", "typ": "JWT" }এখানে
algহলো সিগনেচার এলগোরিদম এবংtypহলো টোকেনের টাইপ।JWT Payload JSON: JWT এর Payload অংশে JSON অবজেক্ট থাকে, যা বিভিন্ন "claims" ধারণ করে। Payload এর মধ্যে সাধারণত তথ্য বা ডেটা থাকে যেগুলো প্রয়োজন অনুযায়ী শেয়ার করা হয়। উদাহরণস্বরূপ:
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }এখানে,
subহল সাবজেক্ট (বিশেষত ব্যবহারকারী বা ইস্যুকৃত),nameব্যবহারকারীর নাম, এবংiatহলো টোকেনের ইস্যু সময়।- JSON ব্যবহার করা সহজ: JSON ফরম্যাটের স্ট্রাকচার সহজ এবং পাঠযোগ্য, যার ফলে JWT-এর ডেটা খুব সহজেই অ্যাক্সেস এবং ব্যবহার করা সম্ভব। বিশেষত ওয়েব অ্যাপ্লিকেশন বা API গুলিতে JSON এবং JWT এর মধ্যে সম্পর্ক খুবই গুরুত্বপূর্ণ, কারণ JSON ডেটা ট্রান্সফার ফরম্যাট হিসাবে ব্যবহার করা হয় এবং JWT ব্যবহারকারীর অথেনটিকেশন ও অথোরাইজেশন নিশ্চিত করতে ব্যবহৃত হয়।
- JWT-র নিরাপত্তা JSON এর মধ্যে থাকে: JSON ডেটা সাধারণত পাঠযোগ্য ও মেশিন-পার্সযোগ্য হয়, তবে JWT সিগনেচারের মাধ্যমে JSON ডেটাকে নিরাপদ ও সুরক্ষিত করা হয়, যাতে কোনো ম্যালিশিয়াস ইউজার এই ডেটাকে পরিবর্তন না করতে পারে।
সারাংশ
JSON (JavaScript Object Notation) এবং JWT (JSON Web Token) উভয়ই JSON ফরম্যাটে তথ্য সংরক্ষণ এবং শেয়ার করার জন্য ব্যবহৃত হয়। JSON একটি সাধারণ ডেটা ফরম্যাট, যা ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়, যখন JWT একটি সুরক্ষিত JSON অবজেক্ট যা Authentication এবং Authorization নিশ্চিত করতে ব্যবহৃত হয়। JSONP এর মাধ্যমে JSON ফরম্যাটে তথ্য ধারণ করা হয়, আর JWT একই JSON ডেটা সিগনেচারের মাধ্যমে সুরক্ষিত এবং বৈধ করে।
Read more